The present invention relates to troubleshooting problems encountered during installation of over the air updates of wireless handset software and, more particularly, to failsafe preservation of diagnostic information that identifies such problems.
Wireless handsets, such as cellular phones, personal data assistants (PDAs) and pocket personal computers (PCs), are becoming increasingly sophisticated. This increased sophistication has brought with it more complex software and a higher incidence of coding errors, called software bugs. This increased sophistication has also led to more frequent availability of software upgrades that enhance the functionality of such handsets. To remove software bugs and enable software upgrades, software updates are disseminated and installed on such handsets.
To more efficiently distribute software updates to a large installed base of wireless handsets, techniques that download software updates to such handsets over the air have been deployed. In such wireless download schemes, a software update package providing instruction on how to update a wireless handset is typically pushed or pulled over the air from a software update server in a network infrastructure to the handset.
A technical challenge that arises during over the air software updates is how to preserve diagnostic information that identifies problems encountered during installation of such updates. Some wireless handsets have diagnostics software that can generate and transmit diagnostic information from the handset to an external diagnostics system via a wired interface of the handset for analysis. However, such diagnostics software is typically stored in the program/data area of the handset's nonvolatile memory. If a fatal error occurs during installation of an over the air update of the handset software, the program/data area may become corrupted and prevent the diagnostics software from outputting the diagnostic information to the external diagnostics system. Without such diagnostic information, analysis of the fatal error is more difficult.